package org.apache.dolphinscheduler.dao.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * <p>
 * 收支明细表
 * </p>
 *
 * @author denggh
 * @since 2023-08-14
 */
@TableName("t_ds_coupondetail")
public class Coupondetail implements Serializable {

    private static final long serialVersionUID = 3L;

    /**
     * id
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 算力券类型
     */
    private Integer couponType;

    /**
     * 资源范围
     */
    private Integer resourceScope;

    /**
     * 使用用户范围
     */
    private Integer useBy;

    /**
     * 使用用户范围
     */
    private Integer type;

    /**
     * 使用规则
     */
    private Integer useRule;

    /**
     * 发放类型
     */
    private String issueType;

    /**
     * 使用规则金额
     */
    private Integer useRuleType;

    /**
     * 面额
     */
    private Integer useRuledeno;

    /**
     * 发放状态
     */
    private Integer issueState;
    /**
     * 发放数量
     */
    private Integer sendNum;

    public Integer getIssueState() {
        return issueState;
    }

    public void setIssueState(Integer issueState) {
        this.issueState = issueState;
    }



    /**
     * 已使用数量
     */
    private Integer useNum;

    /**
     * 所属用户组·
     */
    private String useGroup;

    public Integer getIssuer() {
        return issuer;
    }

    public void setIssuer(Integer issuer) {
        this.issuer = issuer;
    }

    /**
     * 发放人
     */
    private Integer issuer;

    /**
     * 规则
     */
    private String rule;

    public String getRule() {
        return rule;
    }

    public void setRule(String rule) {
        this.rule = rule;
    }

    /**
     * 算力券更新时间
     */
    private Date updateTime;

    /**
     * 使用券结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", timezone = "GMT+8")
    private Date useEndTime;

    /**
     * 使用券开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", timezone = "GMT+8")
    private Date useStartTime;

    /**
     * 发布券开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", timezone = "GMT+8")
    private Date sendStartTime;

    /**
     * 发布券结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", timezone = "GMT+8")
    private Date sendEndTime;

    /**
     * 算力券编号
     */
    private String couponNo;

    /**
     * 算力券名称
     */
    private String couponName;

    /**
     * 使用说明
     */
    private String intro;

    /**
     * 用户算力券限领张数
     */
    private Integer useLimit;


    /**
     * 算力券使用时间规则类型（固定时间，领取后生效）
     */
    private Integer useTimeType;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public Integer getCouponType() {
        return couponType;
    }

    public void setCouponType(Integer couponType) {
        this.couponType = couponType;
    }

    public Integer getResourceScope() {
        return resourceScope;
    }

    public void setResourceScope(Integer resourceScope) {
        this.resourceScope = resourceScope;
    }

    public Integer getUseBy() {
        return useBy;
    }

    public void setUseBy(Integer useBy) {
        this.useBy = useBy;
    }

    public Integer getType() {
        return type;
    }

    public void setType(Integer type) {
        this.type = type;
    }

    public Integer getUseRule() {
        return useRule;
    }

    public void setUseRule(Integer useRule) {
        this.useRule = useRule;
    }

    public String getIssueType() {
        return issueType;
    }

    public void setIssueType(String issueType) {
        this.issueType = issueType;
    }

    public Integer getUseRuleType() {
        return useRuleType;
    }

    public void setUseRuleType(Integer useRuleType) {
        this.useRuleType = useRuleType;
    }

    public Integer getUseRuledeno() {
        return useRuledeno;
    }

    public void setUseRuledeno(Integer useRuledeno) {
        this.useRuledeno = useRuledeno;
    }

    public Integer getUseNum() {
        return useNum;
    }

    public void setUseNum(Integer useNum) {
        this.useNum = useNum;
    }

    public Integer getSendNum() {
        return sendNum;
    }

    public void setSendNum(Integer sendNum) {
        this.sendNum = sendNum;
    }

    public String getUseGroup() {
        return useGroup;
    }

    public void setUseGroup(String useGroup) {
        this.useGroup = useGroup;
    }

    public Date getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }

    public Date getUseEndTime() {
        return useEndTime;
    }

    public void setUseEndTime(Date useEndTime) {
        this.useEndTime = useEndTime;
    }

    public Date getUseStartTime() {
        return useStartTime;
    }

    public void setUseStartTime(Date useStartTime) {
        this.useStartTime = useStartTime;
    }

    public Date getSendStartTime() {
        return sendStartTime;
    }

    public void setSendStartTime(Date sendStartTime) {
        this.sendStartTime = sendStartTime;
    }

    public Date getSendEndTime() {
        return sendEndTime;
    }

    public void setSendEndTime(Date sendEndTime) {
        this.sendEndTime = sendEndTime;
    }

    public String getCouponNo() {
        return couponNo;
    }

    public void setCouponNo(String couponNo) {
        this.couponNo = couponNo;
    }

    public String getCouponName() {
        return couponName;
    }

    public void setCouponName(String couponName) {
        this.couponName = couponName;
    }

    public String getIntro() {
        return intro;
    }

    public void setIntro(String intro) {
        this.intro = intro;
    }

    public Integer getUseLimit() {
        return useLimit;
    }

    public void setUseLimit(Integer useLimit) {
        this.useLimit = useLimit;
    }

    public Integer getUseTimeType() {
        return useTimeType;
    }

    public void setUseTimeType(Integer useTimeType) {
        this.useTimeType = useTimeType;
    }



    @Override
    public String toString() {
        return "Coupondetail{" +
                "id=" + id +
                ", couponType=" + couponType +
                ", resourceScope=" + resourceScope +
                ", useBy=" + useBy +
                ", type=" + type +
                ", useRule=" + useRule +
                ", issueType='" + issueType + '\'' +
                ", useRuleType=" + useRuleType +
                ", useRuledeno=" + useRuledeno +
                ", sendNum=" + sendNum +
                ", issueState=" + issueState +
                ", useGroup='" + useGroup + '\'' +
                ", issuer='" + issuer + '\'' +
                ", Rule='" + rule + '\'' +
                ", updateTime=" + updateTime +
                ", useEndTime=" + useEndTime +
                ", useStartTime=" + useStartTime +
                ", sendStartTime=" + sendStartTime +
                ", sendEndTime=" + sendEndTime +
                ", couponNo='" + couponNo + '\'' +
                ", intro='" + intro + '\'' +
                ", useLimit=" + useLimit +
                ", useTimeType=" + useTimeType +
                ", couponName='" + couponName + '\'' +
                '}';
    }
}
